Jak działa Windows cz 4
Dziś dowiemy się, dlaczego Windows jest systemem 32-bitowym i co z tego wynika.
Systemy 16-bitowe
To, że system jest 8-, 16- czy 32-bitowy zależy od sposobu zarządzania pamięcią
RAM i jej podziału na tzw. segmenty. W systemach 16-bitowych (DOS, Windows 3.1x) każdy
segment miał wielkość 65536 bajtów, bo tyle dało się zapisac zapisac za pomocą 16
bitów (2 bajty, od &H0000 do &HFFFF). Było o tyle kłopotliwe, że rzadko który
program zajmował mniej niż te 64 KB. Tak więc trzeba było wyróżniać segmentu kodu,
stosu, danych itp. Do tego dochodzą jeszcze (w językach wyższego poziomu niż
assembler) takie kwiatki jak model pamięci, wskaźniki dalekie i bliskie i tym podobne
rzeczy.
Łatwo policzyć, że maksymalna ilość adresowanej w ten sposób pamięci to ok. 4 GB
(65 tysięcy segmentów po 65 tysięcy bajtów każdy).
Systemy 32-bitowe
Żeby w pełni korzystać z dobrodziejstw 32-bitowości, trzeba mieć 32-bitowy procesor. To akurat nie problem, bo wszystkie jednostki od 386 wzwyż spełniają ten warunek. Czym się różni taki procesor od starszych? Na przykład tym, że posiada 32-bitowe rejestry, np. EAX:
EAX | 43 56 12 67h |
AX | 12 67h |
AH | 12h |
AL | 67h |
Jednak najlepsze jest to, że nie trzeba się martwić o segmenty, gdyż ich praktycznie nie ma. No, właściwie są, tyle że jeden zamiast 64 KB zajmuje... 4 GB! Po prostu zamiast dwóch liczb 16-bitowych:
0453h | : | 6784h |
segment | : | offset |
wprowadzono jedną 32-bitową:
04536784h |
offset |
Taki model jest nazywany pamięcia płaską (flat) i korzysta z niego Windows wraz ze wszystkimi doń programami.
Pamięć wirtualna
Windows dba o to, żeby każdy program teoretycznie mógł korzystać z całego czterogigabajtowego segmentu pamięci. Oczywiście bardzo rzadko jest to naprawdę możliwe, w końcu niewielu ma więcej niż kilkaset megabajtów RAMu. W dodatku jednocześnie uruchomionych jest zawsze przynajmniej kilka programów. I tu przychodzi czas na pamięć wirtualną. jeżeli zabraknie RAMu, Windows wykorzystuje część dysku jako tak zwany plik wymiany. Dzięki temu może udawac, że ma znacznie więcej pamięci w rzeczywistości, ale z uszczerbkiem na szybkości (w końcu RAM jest znacznie szybszy niż dysk twardy). To, w jakim stopniu plik wymiany jest wykorzystywany zależy od ilości pamięci operacyjnej. Samo Windows potrzebuje kilka jej megabajtów, przeciętny niewielki program (jak np. WordPad, Paint) zajmuje mniej więcej kilkaset KB do jednego MB, natomiast wieksze (Word, Excel) - od kilku do nawet kilkunastu MB. Tak więc np. 32 MB pamięci to zdecydowanie za mało, ale 64 MB to juz nieźle. Pominąłem tu jeszcze takie rzeczy jak na przykład Schowek (wciśnij raz Print Screen i juz masz 1,5 MB pamięci mniej :))
Na dzisiaj to koniec. Zapewne niektórzy zadają sobie pytanie: po kiego to? Co z tej wiedzy przyda się w VB? Śmiem twierdzić, że całkiem sporo, a w następnej cześci podam kilka przykładów.
Karol Kuczmarski
qkarol@go2.pl
http://www.qkarol.prv.pl
ICQ: 69629311